package edu.android.proyecto;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import edu.android.proyecto.beans.Pedido;
import edu.android.proyecto.beans.Producto;
import edu.android.proyecto.json.JSONfunctions;

public class ProductoActivity extends Activity {

	//Context ctx;
	
	@Override      
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.producto_seleccionado);
		
		ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
		JSONObject json = JSONfunctions.getJSONfromURL("http://192.168.1.37:8080/controller/mobile/devolverStockProductos/" + DataRepository.Producto_Seleccionado.getId() + "/1");

		System.out.println("CODIGO DE PREODUCTO SELECCIONADO: ---->" + DataRepository.Producto_Seleccionado.getId());
		try{

			JSONObject  respuesta = json.getJSONObject("resp");

			HashMap<String, String> map = new HashMap<String, String>();	

				map.put("cantidad", respuesta.getString("producto"));  
				map.put("cantidad", respuesta.getString("cantidad"));
	           	mylist.add(map);			   
	   
        }catch(JSONException e)        {
        	 Log.e("log_tag", "Error parsing data "+e.toString());
        }		
		System.out.println("akiiiiiiiiiiiiiiiiiiiiiiiiiiiii json03");
		   
		ImageView imgProducto = (ImageView) findViewById(R.id.ivProducto);
		TextView nombre = (TextView) findViewById(R.id.tvValNombre);
		TextView precio = (TextView) findViewById(R.id.tvValPrecio);
		TextView stock = (TextView) findViewById(R.id.tvValStock);
		
		DataRepository.Producto_Seleccionado.setStock(Integer.parseInt(mylist.get(0).get("cantidad").toString()));
		
		nombre.setText(DataRepository.Producto_Seleccionado.getNombre());
		imgProducto.setImageBitmap(this.getBitmapFromAsset(DataRepository.Producto_Seleccionado.getPath()));
		precio.setText(DataRepository.Producto_Seleccionado.getPrecio()+"");
		stock.setText(DataRepository.Producto_Seleccionado.getStock()+"");
		
	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_producto, menu);
        return true;
    }
    
    private Bitmap getBitmapFromAsset(String path)
	{
		Bitmap bitmap = null;
		try
		{
			Log.v("ruta_imagen", path);
			AssetManager assetManager = getApplicationContext().getAssets();
			InputStream istr;
			String ruta = "images/"+path;
			System.out.println("ruta:"+ruta);
			istr = assetManager.open(ruta);
			bitmap = BitmapFactory.decodeStream(istr);
			istr.close();
		}
		catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			bitmap = null;
		}
		return bitmap;
	}

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
		case R.id.btConfirmar:

				EditText cantidad = (EditText) findViewById(R.id.etCantidad);
				System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"+Integer.parseInt(cantidad.getText().toString()));
				if ( Integer.parseInt(cantidad.getText().toString()) <= DataRepository.Producto_Seleccionado.getStock()) {
				System.out.println("---------------------> Voy a Guardar el Producto");
						
					DataRepository.Producto_Seleccionado.setCantidad(Integer.parseInt(cantidad.getText().toString()));
					System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaa"+DataRepository.Producto_Seleccionado.getCantidad());
					Pedido pedidito = new Pedido();
					System.out.println("------------> Agrego el Producto_seleccionado a ListaProductoPedido");
					DataRepository.listaProductoPedido.add(DataRepository.Producto_Seleccionado);

					System.out.println("---------------------> Seteo los valores al Bean Pedido");
					pedidito.setIdmesa(DataRepository.Mesa_Seleccionada.getId());
					pedidito.setListProducto(DataRepository.listaProductoPedido);

					DataRepository.Pedido_actual = pedidito;
					
					System.out.println("Pedido------------->");
					for (int i = 0; i < DataRepository.listaProductoPedido.size(); i++) {
						System.out.println("Producto : "+DataRepository.listaProductoPedido.get(i).getNombre()+"  cantidad : "+DataRepository.listaProductoPedido.get(i).getCantidad());
					}
					
					MuestraAlert("Se agrego al Pedido Correctamente");

				}else {
					MuestraAlert("El stock es insuficiente");
				}			
			break;
		case R.id.btAtras:
				finish();
			break;
		}
    	
    	return super.onOptionsItemSelected(item);
    }

    public void MuestraAlert(String mensaje){
    	
    	AlertDialog.Builder alerta = new AlertDialog.Builder(this);
    	alerta.setMessage(mensaje);
    	
    	alerta.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
				finish();
			}
		});
    	alerta.show();
    }
    
    
    public void MuestraMensajeConfirmacion(){
    
		AlertDialog.Builder adb = new AlertDialog.Builder(this);
        adb.setMessage("Seguro que desea Agregar al Pedido?");
        adb.setCancelable(false);
        adb.setPositiveButton("Si", new DialogInterface.OnClickListener() { //Boton Positivio 
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();//Si se sale, se cierra el activity
            }
        });
        adb.setNegativeButton("No", new DialogInterface.OnClickListener() {//Boton negativo
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();//Se cancela el AlertDialog
            }
        });
        adb.show();//Se muestra el AlertDialog
        
    }	
    
}
